package com.conselheiro.web.entidade;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import com.conselheiro.web.entidade.enumeration.TipoPost;

/**
 * Classe abstrata para encapsular os atributos comuns a {@link Conselho} e
 * {@link Relato}.
 * 
 * @author Diogo Vinicius
 * 
 */
@Entity
@Inheritance
@DiscriminatorColumn(name = "discriminator")
@Table(name = "post")
public abstract class Post implements Identificavel {

	private static final long serialVersionUID = 4161752123760918414L;
	@Id
	@GeneratedValue
	private long id;
	private String titulo;
	@Column(length=600)
	private String descricao;
	@ManyToOne(targetEntity = Usuario.class)
	private Usuario usuario;
	private boolean isAnonimo;
	@Enumerated (EnumType.STRING)
	private TipoPost tipo;
	private Date data = new Date();

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public boolean isAnonimo() {
		return isAnonimo;
	}

	public void setAnonimo(boolean isAnonimo) {
		this.isAnonimo = isAnonimo;
	}

	public TipoPost getTipo() {
		return tipo;
	}

	public void setTipo(TipoPost tipo) {
		this.tipo = tipo;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

}
